/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.thienloc.omap.util;

/**
 *
 * @author GiangLT
 */
public class RegularExpression {

    /**
     *   Chuỗi regEx email hợp lệ:<br>
     *   -	Đủ 3 phần: username@domain<br>
     *   -	Username có thể chứa các ký tự ._%-<br>
     *   -	Phần cuối tên miền ko đc quá 4 ký tự (VD: .museum)<br>
     */
    public static final String EMAIL = "^[\\w._%+-]+@([\\w-]+\\.){1,4}[A-Za-z]{2,4}$";
    /**  Chuỗi regEx url hợp lệ (tính cả query string) <br>
     *   resource_type://domain:port/filepathname?query_string#anchor<br>
     *      <br>
     *    Có thể chứa hoặc ko chứa phần resource_type , port: <br>
     *    VD hợp lệ: <br>
     *    http://diskusneforum.sk<br>
     *    www.diskusneforum.sk<br>
     *    ftp://123.123.123.123/<br>
     *    diskusneforum.sk<br>
     *    http://diskusneforum.sk/index.aspx?ref=asdkj
     */
    public static final String URL =
            "(((file|gopher|news|nntp|telnet|http|ftp|https|ftps|sftp)://)|" + //protocols
            "(www\\.))*(([a-zA-Z0-9\\._-]+\\.[a-zA-Z]{2,6})|" +
            "([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}))" + //IP Addressing
            "(/[a-zA-Z0-9\\&amp;%_\\./-~-]*)?"; //references;
    /**Chuỗi regEx url hợp lệ (không có query string)<br>
     *   resource_type://domain:port/filepathname
     */
    public static final String SIMPLE_URL =
            "(((file|gopher|news|nntp|telnet|http|ftp|https|ftps|sftp)://)|" +
            "(www\\.))+(([a-zA-Z0-9\\._-]+\\.[a-zA-Z]{2,6})|" +
            "([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}))";
    /**Chuỗi regEx số bất kỳ
     *
     */
    public static final String NUMBER = "^-?\\d*\\.?\\d+$";
    /**Chuỗi regEx số nguyên
     *
     */
    public static final String INTEGER = "^-?\\d+$";
    /**Chuỗi regEx password đủ độ an toàn:<br>
     *-	Có ít nhất 6 ký tự<br>
     * -	Có ít nhất 1 chữ hoa, 1 chữ thường, 1 chữ số, 1 ký tự đặc biệt
     */
    public static final String STRONG_PASSWORD =
            "(?=[-_!#~@%&\\s\\$\\^\\*\\?a-zA-Z0-9]*?[A-Z])" + //at least 1 upper case char
            "(?=[-_!#~@%&\\s\\$\\^\\*\\?a-zA-Z0-9]*?[a-z])" + //at least 1 lower case char
            "(?=[-_!#~@%&\\s\\$\\^\\*\\?a-zA-Z0-9]*?[0-9])" + //at least 1 digit
            "(?=[-_!#~@%&\\s\\$\\^\\*\\?a-zA-Z0-9]*?[-_!#~@%&\\s\\$\\^\\*\\?])" +// at least 1 special char
            "[-_!#~@%&\\s\\$\\^\\*\\?a-zA-Z0-9]{6,}";// at least 6 chars long
    /**Chuỗi regEx ngày tháng hợp lệ<br>
     *Chấp nhận:	10/03/1979 | 1-1-02 | 01.1.2003 | 10012005 | 20 04 2005<br>
     * Ko chấp nhận:	10/03/197 | 09--02--2004 | 01 02 03
     */
    public static final String DATE =
            "^([0]?[1-9]|[1|2][0-9]|[3][0|1])[./-\\s]?" +//day
            "([0]?[1-9]|[1][0-2])[./-\\s]?" +//month
            "([0-9]{4}|[0-9]{2})$";//year
    /**Chuỗi regEx thời gian hợp lệ<br>
     *Chấp nhận:	12:15 | 10:26:59 | 22:01:15<br>
     * Ko chấp nhận:	24:10:25 | 13:2:60<br>
     */
    public static final String TIME = "^(([0-1]?[0-9])|([2][0-3])):([0-5]?[0-9])(:([0-5]?[0-9]))?$";
    /** Chuỗi regEx IPv4 hợp lệ
     *
     */
    public static final String IPv4 =
            "^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\." +
            "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\." +
            "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\." +
            "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$";
    /**Chuỗi regEx số ĐTDĐ hợp lệ<br>
     *VD: 0988098602
     */
    public static final String MOBILE_NUM = "\\d{1,13}";
//            "^((097)|(098)|(0167)|(0168)|(0169)|(8497)|(8498)|(84167)|(84168)|(84169)|" + //Viettel
//            "(091)|(0123)|(0125)|(0127)|(8491)|(84123)|(84125)|(84127)|" + //Vinaphone
//            "(090)|(0122)|(0124)|(0126)|(8490)|(84122)|(84124)|(84126)|" + //MobiPhone
//            "(092)|(095)|(096)|(8492)|(8495)|(8496))" +//others"
//            "\\d{7}$";
    /**Chuỗi regEx số đăng ký xe máy hợp lệ<br>
     *VD: 29-K3 2239
     */
    public static final String MOTOR_REG_NUM = "^\\d{2}-[A-Z][0-9]\\s\\d{4}$";
    /**Chuỗi regEx số ĐT bàn hợp lệ<br>
     **VD: 0438562959
     */
    public static final String PHONE_NUM = "^0[1-9]{1,3}\\d{8}$";
}
